/**
 * Interface describing objects that can move around the board.
 * @author mx109
 *
 */
public interface MoveableObject {
	
	/**
	 * 
	 * @return unique object number.
	 */
	int getId();
	
	/**
	 * 
	 * @return current position of object
	 */
	Position getPosition();
	
	/**
	 * Changes the position of the object to the given.
	 * @param a new position of object.
	 */
	void setPosition(Position a);
	
	/**
	 * Try make a move on board in given direction
	 * @param dir  Direction of move
	 * @return true if made the move
	 */
	boolean move(Direction dir);
	
	@Override
	public boolean equals(Object o);
}
